今天要來介紹兩種讓app可以比較穩定運行的技術。
Throttling是為函數設定一個限流器,確保應用程式在一定時間內不會處理過多事情,避免伺服器過載或遭受惡意攻擊,假設有一個應用程式,它每秒可以處理100個request,如果突然增加到500個request,那伺服器可能會被打垮QQ,Throttling就能派上用場,它會限制應用程式每秒只能處理100個request,讓流量保持在一個合理的範圍內,也可以防止惡意DDoS攻擊這類行為。
Throttling的好處是能保護伺服器的穩定性,不過要注意的是,如果限流設定過於嚴格,可能會影響應用程式的性能,讓使用者感到延遲,這樣反而不好,像是每秒的request數量設定太少,就導致使用者的需求還要等待才能被處理,因此要設定在剛好可以處理的數量,會比較好一點,記得也抓一下buffer。
Debouncing是用來限制某個函數在短時間內被重複觸發,當函數觸發後,會有一個冷卻時間,等冷卻時間過後才可以再次觸發。主要是為了避免因為頻繁觸發同一個操作而造成的資源浪費或是發生性能問題。
例如重整按鈕,我們可以設定它3秒才能被triger一次,就可以避免有人一直重整頁面導致效能被吃光。
Throttling是限制一段時間內可以執行幾次,而Debouncing是執行一次後,要有一段時間的延遲。
Throttling可以用在網頁的滾動事件,滾動事件非常頻繁,如果不加限制,會在短時間內觸發大量操作,影響性能。
Debouncing可以用在搜尋框輸入內容時,希望在停止輸入後再發送請求,而不是每次輸入按鍵都觸發請求。這樣可以避免在使用者快速輸入過程中發送大量無用的請求。
使用得當可以幫助我們的app更加的穩定XD
https://dev.to/aneeqakhan/throttling-and-debouncing-explained-1ocb